package com.mall.module.user.service;

import com.mall.module.user.domain.entity.UserCredential;

import java.util.List;

public interface UserCredentialService {

    /**
     * 通过凭证ID查询用户凭证
     *
     * @param credentialId 凭证ID
     * @return 用户凭证
     */
    UserCredential getCredentialById(Long credentialId);

    /**
     * 通过用户ID查询用户凭证列表
     *
     * @param userId 用户ID
     * @return 用户凭证列表
     */
    List<UserCredential> getCredentialsByUserId(Long userId);

    /**
     * 通过认证类型和唯一标识查询用户凭证
     *
     * @param identityType 认证类型
     * @param identifier 唯一标识
     * @return 用户凭证
     */
    UserCredential getCredentialByIdentity(String identityType, String identifier);

    /**
     * 创建用户凭证
     *
     * @param userCredential 用户凭证
     * @return 是否成功
     */
    boolean createCredential(UserCredential userCredential);

    /**
     * 更新用户凭证
     *
     * @param userCredential 用户凭证
     * @return 是否成功
     */
    boolean updateCredential(UserCredential userCredential);

    /**
     * 删除用户凭证
     *
     * @param credentialId 凭证ID
     * @return 是否成功
     */
    boolean deleteCredential(Long credentialId);

    /**
     * 通过用户ID删除用户凭证
     *
     * @param userId 用户ID
     * @return 是否成功
     */
    boolean deleteCredentialsByUserId(Long userId);

    /**
     * 验证用户凭证
     *
     * @param identityType 认证类型
     * @param identifier 唯一标识
     * @param credential 凭证
     * @return 是否验证通过
     */
    boolean verifyCredential(String identityType, String identifier, String credential);
}